######################################第一题
def pd_len(a:str)->bool:
    """
    判断密码长度是否超过8位
    :param a: 密码形参
    :return: 超过8位返回True
    """
    if len(a)>8:
        return True
    else:
        return False

def pd_complex(a:str)->bool:
    """
    判断密码复杂度，是否有数字、大小写、特殊字符
    :param a: 密码形参
    :return: 如果有三种及以上就返回True
    """
    has_digit = has_upper = has_lower = has_other=0
    for i in a:
        if i.isdigit():
            has_digit=1
        if i.isupper():
            has_upper=1
        if i.islower():
            has_lower=1
        if not  (48 <= ord(i) <= 57 or  # 数字
                65 <= ord(i) <= 90 or  # 大写字母
                97 <= ord(i) <= 122):  # 小写字母
            has_other=1
    if has_digit+has_upper+has_lower+has_other>=3:
        return True
    else:
        return False

def pd_zichuan(a:str)->bool:
    """
    判断密码中是否有长度大于等于3的重复子串
    :param a: 密码的形参
    :return: 有大于等于3的重复子串就是false  符合规定的密码就是True
    """
    a_len=len(a)
    A=[]
    for i in range(a_len):
        for j in range(i+3,a_len+1):
            sub_a=a[i:j]
            if sub_a in A:
                return False
            A.append(sub_a)
    return  True

a=input("请输入密码")
passwd_score=2
passwd_err=[]  #保存密码不符合要求时的信息
if pd_len(a):
    passwd_score+=1
else:
    passwd_err.append(" 密码长度不足8位 ")
if pd_complex(a):
    passwd_score+=1
else:
    passwd_err.append(" 密码复杂度不符合要求，要有数字、大小写、特殊字符至少三种 ")
if pd_zichuan(a):
    passwd_score+=1
else:
    passwd_err.append(" 密码中有长度超过3的子串 ")
print(f"你的密码评分等级是{passwd_score}，{passwd_err}")